Многообразие тестов
Чёрный ящик
Это семейство тестов рассматривает тестируемую систему как изолированный объект малоизвестной природы
-
Базовые сценарные/UI тесты. Соответсвуют фичам, в основном тестируют навигацию и наличие html элементов
-
Продвинутые UI тесты. Автоматизированы и эффективны. Тестируют все роли пользователей, ресетят данные, повторяющиеся функции абстрагированы. Medium priority
-
drag-and-drop
-
тестирование различных ролей на привилегии
-
многопоточный аплоад файлов
-
тесты с вебсокетами на cross-browser data synchronization
-
Поведенческие тесты. Пишутся для бизнеса что-бы "наглядно" показывать что тестируется, но требует парсер на более низкий уровень
-
Скриншоты и CSS регрессия. Тестируют слетающий UI, шрифты, разные браузеры и телефоны
Серый ящик
Это семейство тестов рассматривает систему на уровне сервисов и процессов
-
Диагностика окружения на доступность ресурсов
-
На Availability сервисов
-
Внешних API (предшественник контрактных тестов). High priority
-
на доступность
-
предсказуемый формат (банальный get и проверка json), проверка что формат не изменился
-
полное взаимодействие с записью (обычно партнёрская компания с разработчиком ставит тестовую машинку)
-
Своего внутреннего API. Запускающиеся без браузера, через CURL запросы, эмулирующие вызов из javascript или мобильных приложений. High priority
-
class/interface compatibility
-
простые get - запросы, проверяющие на наличие ошибок/stacktrace
-
post/put запросы, меняющие данные
-
в запущенных случаях (мобильные приложения), когда с мобильника e2e тесты не запустить, а функционал надо тестировать, то получаются последовательные сценарные (а не одинарные get-post) запросы, сохраняющие состояние сущностей и пользователя (в БД и сессии)
-
На Concurrency. Тестируется наличие дедлоков на бэкэнде
-
Целостность данных
-
целостность данных между табличками БД и/или файлами
-
сравнение entity классов с БД
-
DB migrations
-
Конфигурационная матрица (поддержка разных платформ)
-
На производительность (performance). Тестовый прогон сервиса/кода что-бы понять эффективность работы
-
response time / speed
-
backend - память, CPU, IO пропорции в RAM, HDD, сети, число запросов в БД
-
frontend - число сетевых запросов
-
На утечку памяти (memory leaks) и event-listener count (особенно для UI компонентов)
-
На нагрузку (load/stress tests). Что будет если будет очень много траффика/посетителей. Что самое слабое звено
-
На failover (что будет если упадёт БД или rabbit, или какой-то сервис). Есть ли резервный вариант, error handling, мониторинг
-
На инъекции. Fuzzy tests
-
injection control - sql, xss injections
-
data format - argument variator - misc types, filepaths
-
file/directory permissions
Белый ящик
-
Unit тесты
-
Backend - Medium priority. Особые случаи - random() ratio, работа с ресурсами (генерация картинок)
-
Frontend - Low priority. Jest, Karma + Jasmine, Mocha.
-
Приватные методы
-
Моки
-
Контракты
-
API
-
Библиотек
-
Виртуальная БД
-
Виртуальная файловая система
-
Мутационные тесты - disabling parts of application to detect dependencies and failure %
-
Тестирование многопоточных процессов